<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>
      //自定义配置  配置axios实例
      //request不是关键字，只是定义的变量
      const request = axios.create({
        baseURL: 'http://localhost:8080', //主机地址
        timeout: 1000, //超时时间1000毫秒
        headers: {
          token: 'hh123',
        },
      })

      //请求拦截器
      request.interceptors.request.use(
        function (config) {
          console.log('请求拦截')
          console.log('config', config)
          config.headers.mytoken = 'hh123' //和上面的令牌都可以用，也可以同时存在
          //放行
          return config
        },
        function (error) {
          return Promise.reject(error)
        }
      )

      //添加响应拦截器
      request.interceptors.response.use(
        function (response) {
          console.log('response', response)
          return response.data
        },
        function () {
          //对错误做点什么
          //......
          return Promise.reject(error)
        }
      )

      //配置请求参数
      // 以axios方法形式调用，括号里配置对象
      request({
        //使用Axios执行远程的Ajax操作
        url: '/user/list',
        method: 'get',
      })
        .then((response) => {
          console.log('数据获取成功', response)
        })
        .catch((error) => {
          console.log('数据获取失败', error)
        })
      //使用promise的 then方法和catch方法处理响应成功和响应失败

      //另一种写法，以axios对象形式调用
      request
        .get('/user/list')
        .then((response) => {
          console.log('数据获取成功', response)
        })
        .catch((error) => {
          console.log('数据获取失败', error)
        })
    </script>
  </body>
</html>
